/**
 * 发送get异步请求
 * @param {string} url 请求地址
 * @param {object} params  请求参数
 * @param {string|undefined} type 返回的数据类型
 * @param {object} headers  自定义请求头
 * @returns promise
 */
function get(url,params,type,headers={}){
    const p=new Promise((resolve,reject)=>{
        const xhr=new XMLHttpRequest()
        xhr.onreadystatechange=()=>{
            if(xhr.readyState===4){
                if(xhr.status===200){
                    let res=xhr.responseText
                    if(type==='json') res=JSON.parse(res)
                    resolve(res)
                }else{
                    reject(xhr.status)
                }
            }
        }
        let temp=[]
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        xhr.open('get',`${url}?${temp.join('&')}`)
        for(let key in headers){
            xhr.setRequestHeader(key,headers[key])
        }
        xhr.send(null)
    })
    return p
}

/**
 * 发送post异步请求
 * @param {string} url 请求地址
 * @param {object} params  请求参数
 * @param {string|undefined} type 返回的数据类型
 * @param {object} headers  自定义请求头
 * @returns promise
 */
function post(url,params,type,headers={}){
    const p=new Promise((resolve,reject)=>{
        const xhr=new XMLHttpRequest()
        xhr.onreadystatechange=()=>{
            if(xhr.readyState===4){
                if(xhr.status===200){
                    let res=xhr.responseText
                    if(type==='json') res=JSON.parse(res)
                    resolve(res)
                }else{
                    reject(xhr.status)
                }
            }
        }
        let temp=[]
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        xhr.open('post',url)
        xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
        for(let key in headers){
            xhr.setRequestHeader(key,headers[key])
        }
        xhr.send(temp.join('&'))
    })
    return p
}